﻿/************************************************************************************
 * 文 件 名:   HK_TaskSystem
 * 
 * 描    述:   HK_TaskSystem 任务管理系统，可通过配置文件对任务流进行配置
 * 
 *             1.在本项目的 Architecture 中注册 IHK_TaskSystem;
 *             2.将 HK_TaskSystemController 中的 Architecture 修改为本项目的 Architecture；
 *             3. 本系统分三个层级：任务链 TaskList、任务 Task、条件 Condition
 *             
 *             4. 对外方法有四个: StartNewTaskList(string taskDataName)  //开启 新的 任务链
 *                               BreakOffTaskList() // 中断 当前 任务链
 *                               AchieveCondition(HK_ConditionType condition) // 达成指定条件
 *                               StopTaskAudio() // 停止当前播放的任务语音
 *                               ImmediateFinishTaskList() // 立即完成当前任务连（主要用于开发测试）
 *                              
 *             5. 更推荐使用Command指令来使用TaskSystem，四个对外方法分别对应四个Command：
 *                              CMD_StartNewTaskList ：开启新的任务链指令
 *                              CMD_BreakOffTaskList ：中断当前任务链指令
 *                              CMD_AchieveCondition ：达成指定条件指令
 *                              CMD_StopTaskAudio ：停止当前播放的任务语音指令
 *                              CMD_ImmediateFinishTaskList ：立即完成当前任务连（主要用于开发测试）
 *                              
 *             6. 可通过Query来查询某条件是否达成：
 *                              Query_ConditionState : 查询某条件是否达成
 *                              
 *             7. 外部可监听事件有六个: Event_TaskListStart     // 任务链开始 事件
 *                                    Event_TaskListFinish    // 任务链结束 事件
 *                                    Event_TaskListBreadOff  // 任务链中断 事件
 *                                    Event_TaskStart         // 任务开始 事件
 *                                    Event_TaskFinish        // 任务结束 事件
 *                                    Event_ConditionAchieve  // 条件达成 事件
 *                                   
 *             TODO: 1. TaskName 没有唯一标识  
 *                   
 * 版    本：   V1.1
 * 创 建 者：   京产肠饭
 * 创建时间：   2023/3/13
 * 链    接：   https://gitee.com/JingChanChangFan/hk_-unity-tools
*************************************************************************************/

using QFramework;

namespace HKTools
{
    public class HKTask_Architecture : Architecture<HKTask_Architecture>
    {
        protected override void Init()
        {
            RegisterModel<IHK_TaskModel>(new HK_TaskModel());
            RegisterSystem<IHK_TaskSystem>(new HK_TaskSystem());
        }
    }
}